package Soligee.model.vo.cadastros;

import Soligee.model.vo.lancamentos.NFEntradaVO;
import Soligee.model.vo.lancamentos.PedidoCompraVO;
import java.io.IOException;
import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.persistence.*;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

@Entity
@Table(name = "fornecedor")
@PrimaryKeyJoinColumn(name = "cod_fornecedor")
@Inheritance(strategy = InheritanceType.JOINED)
public class FornecedorVO extends PessoaJuridicaVO implements Serializable {

   @Column(name = "ramo_atividade")
   private String ramoAtividade;

   @OneToMany(mappedBy = "fornecedor", fetch = FetchType.EAGER, cascade = {javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST})
   @Cascade(CascadeType.LOCK)
   @Fetch(FetchMode.SELECT)
   private Collection<NFEntradaVO> nfentrada;

   @OneToMany(mappedBy = "fornecedor", fetch = FetchType.EAGER, cascade = {javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST})
   @Cascade(CascadeType.LOCK)
   @Fetch(FetchMode.SELECT)
   private Collection<PedidoCompraVO> pedidosdecompras;

   public FornecedorVO() {
      super();
   }

   public FornecedorVO(int codPessoa, String nome, String telefoneUm, String telefoneDois, String email, String paginaWeb, String caminhoImagem, Date dataCadastro,
           String razaoSocial, String cnpj, String inscEstadual, String ramoAtividade) throws IOException {

      super(codPessoa, nome, telefoneUm, telefoneDois, email, paginaWeb, caminhoImagem, dataCadastro, razaoSocial, cnpj, inscEstadual);
      this.setRamoAtividade(ramoAtividade);
   }

   public String getRamoAtividade() {
      return ramoAtividade;
   }

   public void setRamoAtividade(String ramoAtividade) {
      this.ramoAtividade = ramoAtividade;
   }

   public Collection<NFEntradaVO> getNfentrada() {
      return nfentrada;
   }

   public void setNfentrada(Collection<NFEntradaVO> nfentrada) {
      this.nfentrada = nfentrada;
   }

   public Collection<PedidoCompraVO> getPedidosdecompras() {
      return pedidosdecompras;
   }

   public void setPedidosdecompras(Collection<PedidoCompraVO> pedidosdecompras) {
      this.pedidosdecompras = pedidosdecompras;
   }

   
}
